package com.roin.learn.springmvc.datasource;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;

public class MultipleDataSource extends AbstractRoutingDataSource {
	Logger log = LoggerFactory.getLogger(MultipleDataSource.class);
	private static final ThreadLocal<String> dataSourceKey= new ThreadLocal<String>();
	/**
	 * 该方法是spring jdbc用来从targetDataSources中查找数据源的，如果返回为null, 则使用defaultTargetDataSource指定的默认数据源
	 * {@inheritDoc}
	 * 
	 * @see org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource#determineCurrentLookupKey()
	 * @since learn-springmvc 0.0.1
	 */
	@Override
	protected Object determineCurrentLookupKey() {
		log.debug("当前使用数据源："+dataSourceKey.get());
		return dataSourceKey.get();
	}
	/**
	 * 增加静态设置方法，用于给当前线程设置数据源
	 */
	public static void setDataSourceKey(String dataSource) {  
	    dataSourceKey.set(dataSource);  
	}
	/**
	 *  增加静态清除方法，用于给无注解方法使用默认数据源
	 */
	public static void toDefault(){  
	    dataSourceKey.remove();  
	}  
}
